2023年6月にリリースされたSnowflakeの新機能・変更点まとめ #SnowflakeDB
さがらです。
2023年6月にリリースされたSnowflakeの新機能と変更点についてのまとめ記事となります。
※注意事項:本記事ではすべての情報についての記述はせず、特筆すべきだと感じた情報だけピックしております。基本的には以下の情報を参考にしておりますので、全ての最新情報を確認したい場合は下記のURLからご確認ください。
始めに:6月末に開催されたSnowflake Summit 2023について
2023年6月に、アメリカのラスベガスでSnowflake Summit 2023が開催されました!多くの新機能が発表されて、Snowflakeがよりデータアプリケーションに注力していくという思いを強く感じました。
また、Dynamic TablesやNative Applications Frameworkなど、Summitに併せてパブリックプレビューとなった機能もあります。※詳細は後述します
現地参加された方も、すでにレポートを投稿しています!
手前味噌ですが、私もOpening Keynoteについてはブログにまとめているため、ぜひご覧ください!
What's New
Dynamic Tablesがパブリックプレビュー
待ち望んでいた方も多いであろう、Dynamic Tablesがパブリックプレビューとなりました!
CREATE DYNAMIC TABLE AS SELECT
の形で記述したSELECT文が返す結果をもとに、TARGET_LAG
で指定した時間ごとに対象のテーブルを更新するという機能で、更新時には差分のみを更新する仕様となっています!
これまではタスクとストリームを駆使して構築するしかなかったChange Data Chaptureのデータパイプラインも、Dynamic Tablesを用いれば数行で実現することが可能です。
ただ、全てをDynamic Tablesに置き換えられるというわけではなく、現時点ではUDFがDynamic Tablesでは使えないというところもあります。(参考:@yamnaku_さんのツイートより)
二アリアルのデータ取り込みについて。いい感じにまとまってる。
Dymanic Table、地味にUDFが使えなかった。#SnowflakeSummit pic.twitter.com/C4is8vBoIU— yamnaku (@yamnaku_) June 28, 2023
Dynamic Tablesについてより詳細に知りたい場合は、下記の公式Docをご覧ください。
Amazon S3-compatible Storageが一般提供
Amazon S3と互換性のあるストレージ内のデータへのアクセスが一般提供となりました。
具体例として、下記の記事ではCloudflare R2に保存したデータをCOPYする流れを検証しております。
ストアドプロシージャでテーブル・ビュー・関数・クエリを引数として渡すことができるように ※パブリックプレビュー
ストアドプロシージャでテーブル・ビュー・関数・クエリを引数として渡すことができるようになりました。
下記のドキュメントを見ると、引数に指定したテーブルに対して新しいレコードをINSERTEDしたり、引数に指定したクエリが返すレコード数をカウントしたり、といったことがサンプルとして挙がっていました。
Snowpark MLがパブリックプレビュー
Snowflake内で機械学習を行うための、データの前処理・MLモデルのトレーニング・管理・デプロイが行なえるSDKなどを含むPythonツールのセットとして、Snowpark MLがパブリックプレビューとなりました。
Snowpark ML Development と Snowpark ML Opsという2つの主要コンポーネントから構成されているようです。※Snowpark ML Opsを使用するにはSnowflakeへ問い合わせする必要あり
ML-Powered Functionsがパブリックプレビュー
ユーザー側で必要なデータを用意しておけば、すぐにモデルの学習と予測・検出が行えるML-Powered Functionsがパブリックプレビューとなりました。
2023年7月5日時点では、Forecasting、Anomaly Detection、Contribution Explorer、の3つについて機能提供がされております。
Native Applications Frameworkがパブリックプレビュー
Snowflakeでデータアプリケーションを開発・公開できるフレームワークとして、Native Applications Frameworkがパブリックプレビューとなりました。
実際には、Streamlitアプリ、ストアドプロシージャ、ユーザー定義関数、を開発し、Marketplaceを介してユーザーへ公開するという一連の流れを行うことができます。
チュートリアルやQuickstartもあります!
また、Native Applications Frameworkで開発されたアプリの使用量ベースで課金を行える「Custom Event Billing」も併せてパブリックプレビューとなっております。
Java・Scala・Pythonの関数またはストアドプロシージャを用いたファイルの読み取りができるように ※Javaが一般公開、Scala・Pythonがパブリックプレビュー
Java・Scala・Pythonの関数またはストアドプロシージャを用いて、ステージングされたファイルの読み取りができるようになりました。
これにより、ステージングされたファイルをPythonで読み取り、必要な処理を行った結果をDataFrameとして作成後、Snowflakeのテーブルに書き出す、ということも可能になりました。
スキーマ検知機能がCSVとJSONに対応 ※パブリックプレビュー
Snowflakeでは元々、Parquet、Avro、ORC、といったフォーマットにおいてスキーマ検知機能を提供していましたが、今回のアップデートでCSVとJSONも対応するようになりました。
実際には下記の記事のことが、CSVとJSONでも出来るようになっています。CSVとJSONは多くの人が使用するフォーマットだと思いますので、ぜひご活用ください!
列の自動追加を行ってくれるTable Schema Evolutionがリリース ※パブリックプレビュー
COPYコマンドやSnowpipeでロード処理が行われた際、対象テーブルのスキーマ定義と異なる場合には自動で列の追加を行ってくれる「Table Schema Evolution」がリリースされました。
テーブルのスキーマ定義がよく変わるデータについては、有効な場面も多い機能だと思います。また、上述のスキーマ検知機能と併せて、スキーマ変更に関してはメンテナンスが不要なテーブルを定義することも可能です!
詳しくは下記の公式Docもご覧ください。
LIMIT句とORDER BY句を使用したSELECT文のパフォーマンス向上 ※一般提供
LIMIT句とORDER BY句を使用したSELECT文のパフォーマンスが向上しました。
ORDER BY句の場合には整数を保持するカラムをORDER BY句の一番始めに指定しないといけない、などの条件はありますが、パフォーマンスが向上するのは嬉しいですよね!
Snowpark、ユーザー定義関数、ストアドプロシージャでPython 3.10、Python 3.9が使用可能に ※パブリックプレビュー
Snowpark、ユーザー定義関数、ストアドプロシージャでPython 3.10、Python 3.9が使用可能になりました。Pythonを使って各処理を定義していた方からすると嬉しいアップデートだと思います!
ORGANIZATION_USAGEスキーマにおいてACCOUNTSビューが使用可能に ※パブリックプレビュー
ORGANIZATION_USAGEスキーマにおいてACCOUNTSビューが使用可能になりました。
このビューでは、組織内のアカウントについて、アカウント名やリージョンはもちろん、アカウントの名前が変更された後に古いURLでアクセスした履歴がないか、リーダーアカウントであるかどうか、などアカウントに関する幅広い情報を確認可能です。
Behavior Change Log
2023_04のバンドルについて
7月5日時点ではデフォルトで有効化されていないですが、2023_04のバンドルがSnowflakeVer7.19からテストできるようになりました。
提示されている関数・コマンド・ビューが新しいカラムを追加したり、Snowsightがオンデマンド契約のユーザーのデフォルトインターフェースとなったり、という変更がこの2023_04のバンドルに含まれています。
一方で、以下の「できなくなること」については、見覚えのある方は早めに対応することをおすすめします。
- Materialized Views: MINUS, EXCEPT, and INTERSECT No Longer Allowed
- Table Functions (Except SQL UDTFs): Restrictions With Lateral Table Functions and Outer Lateral Joins
- Materialized Views: MINUS, EXCEPT, and INTERSECT No Longer Allowed
おまけ:Modern Data Stack全般の最新情報
Snowflakeも含め、個人的に気になったModern Data Stack全般の最新情報についても、定期的にブログにまとめて投稿しております!こちらもぜひご覧ください。